# 给定两个字符串 s 和 t，判断它们是否是同构的。

# 如果 s 中的字符可以被替换得到 t ，那么这两个字符串是同构的。

# 所有出现的字符都必须用另一个字符替换，同时保留字符的顺序。两个字符不能映射到同一个字符上，但字符可以映射自己本身。

# 示例 1:

# 输入: s = "egg", t = "add"
# 输出: true
# 示例 2:

# 输入: s = "foo", t = "bar"
# 输出: false
# 示例 3:

# 输入: s = "paper", t = "title"
# 输出: true
# 说明:
# 你可以假设 s 和 t 具有相同的长度。


class Solution:
    def isIsomorphic(self, s, t):
        """
        :type s: str
        :type t: str
        :rtype: bool
        """
        str_map1, str_map2 = {}, {}

        # s t的长度
        s_list_len = len(s)
        t_list_len = len(t)
        if s_list_len != t_list_len:
            return False

        for i in range(t_list_len):
            if str_map1.get(s[i]) != str_map2.get(t[i]):
                return False
                # 两个字典里对应的值存同一个下标
            str_map1[s[i]] = str_map2[t[i]] = i
        return True


if __name__ == '__main__':
    s = Solution()
    s1 = 'boo'
    s2 = 'abb'
    print(s.isIsomorphic(s1, s2))
